package com.ylr.blog.framework.service;

import com.ylr.blog.framework.entity.BlogEntity;
import com.ylr.base.common.dto.PageDto;
import com.ylr.blog.common.dto.blog.BlogDto;
import com.ylr.blog.common.vo.blog.BlogFormVo;
import com.ylr.blog.common.vo.blog.BlogVo;
import com.baomidou.mybatisplus.extension.service.IService;

/**
 * Created by IntelliJ IDEA.
 *
 * @author wyw
 * date: 2023-05-18 21:39:06
 * className: BlogService
 * version: 1.0
 * description:
 */
public interface BlogService extends IService<BlogEntity> {

    /**
     * 保存博客操作
     * @param blogVo 参数对象
     */
    void saveBlog(BlogVo blogVo);

    /**
     * 保存博客并提交审核操作
     * @param blogVo 参数对象
     * @return 未完成的属性提示
     */
    String saveAndCommitBlog(BlogVo blogVo);

    /**
     * 分页查询用户博客接口
     * @param blogFormVo 参数对象
     * @return 用户博客分页数据
     */
    PageDto<BlogDto> pageBlogList(BlogFormVo blogFormVo);

    /**
     * 获取博客空间关联的博客数量
     * @param userId  用户主键
     * @param spaceId 空间主键
     * @return 博客数量
     */
    Integer getBlogNum(Long userId, Long spaceId);

    /**
     * 博客提交审核操作
     * @param id   博客主键
     * @param code 博客编号
     * @return 未完成的属性提示
     */
    String commitBlog(Long id, String code);

    /**
     * 撤销待审核博客操作
     * @param id   博客主键
     * @param code 博客编号
     */
    void withdrawAuditBlog(Long id, String code);

    /**
     * 发布博客操作
     * @param id   博客主键
     * @param code 博客编号
     */
    void publishBlog(Long id, String code);

    /**
     * 更新博客状态操作
     * @param id     博客主键
     * @param code   博客编号
     * @param status 状态
     */
    void updateBlogStatus(Long id, String code, Integer status);

}

